package com.eshop.modules.system.service;

import com.eshop.modules.system.service.dto.RoleSmallDto;
import java.util.Set;
import com.eshop.modules.system.domain.vo.MenuVo;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import com.eshop.modules.system.service.dto.MenuDto;
import java.util.List;
import java.util.Map;
import org.springframework.data.domain.Pageable;
import com.eshop.modules.system.service.dto.MenuQueryCriteria;
import com.eshop.modules.system.domain.Menu;
import com.eshop.common.service.BaseService;

public interface MenuService extends BaseService<Menu>
{
    Map<String, Object> queryAll(final MenuQueryCriteria criteria, final Pageable pageable);
    
    List<Menu> queryAll(final MenuQueryCriteria criteria);
    
    void download(final List<MenuDto> all, final HttpServletResponse response) throws IOException;
    
    Map<String, Object> buildTree(final List<MenuDto> menuDtos);
    
    List<MenuVo> buildMenus(final List<MenuDto> menuDtos);
    
    Object getMenuTree(final List<Menu> menus);
    
    Set<Menu> getDeleteMenus(final List<Menu> menuList, final Set<Menu> menuSet);
    
    List<Menu> findByPid(final long pid);
    
    List<MenuDto> findByRoles(final List<RoleSmallDto> roles);
    
    void delete(final Set<Menu> menuSet);
    
    void update(final Menu resources);
    
    Object create(final Menu resources);
}
